COLECOVISION TOOLCHAIN DASHBOARD · OCTOBER 2026

Different tools, different priorities.

Measured evidence for eight ColecoVision toolchains and a pure-ASM baseline.

The tests use size-oriented native settings validated for these fixtures. Occupied size excludes cartridge padding. Smaller does not automatically mean faster or better.

REPRODUCIBLE EVIDENCE

Six samples, eight toolchains plus an ASM baseline.

Occupied ROM bytesPure ASM*Amy StudioNewColecoPkK's devkitPVColLibdevkitSMSCVBasicz88dkugBASIC
Hello World1842277951,0011,1061,4011,4661,9801,420
Warrior bitmap3,0663,2143,6434,6914,5254,6804,9484,9769,733
Controller monitor2646049328121,1941,4031,6952,2722,025
Sprite metasprite3439391,1421,4131,3041,6541,8452,4925,797
Gameplay state update*5081,1521,2531,2911,3082,0992,4532,7124,013
Tile animation7611,2551,3761,6271,5301,8382,9822,7292,091
Six-sample total*5,1267,3919,14110,83510,96713,07515,38917,16125,079

* Pure ASM is a diagnostic lower-level baseline, not a ninth high-level toolchain. State Update is behavior-validated but not yet a strict display-equivalent size ranking.

Measured revisions: Amy Studio 02596a3f (2026-10-20); CVBasic 0.9.2 e99aede0 (2026-07-24); z88dk nightly 26587-33d4c333ea-20261020 with zsdcc 4.6; ugBASIC e35e6df (2026-10-10); devkitSMS 533ae572 (2026-09-29) with SDCC 4.5; PVColLib 1.6.0 f9335847 (2026-05-31); NewColeco's historical GETPUT 1.1 snapshot with SDCC 2.9.0 #5416 (March 2009); and PkK libcv 0.28/libcvu 0.21 (2021-10-01) rebuilt with SDCC 4.5. The refreshed z88dk suite saves 15 bytes overall. devkitSMS adds 12 bytes overall to include its corrected ColecoVision VDP acknowledgement, IRQ/NMI vector protection, and bounded RAM clearing.

Download evidence ZIP Read detailed results

BIOS-ASSISTED PURE Z80 ASSEMBLY

A measured lower-level baseline for all six samples.

Matching hand-written ASM implementations pass every GearColeco oracle using Amy Studio’s permitted assets, codecs, BIOS services, and behavior. Their six ROMs occupy 5,126 bytes versus Amy Studio’s 7,391, exposing concrete optimization targets. Amy remains safe by default while explicit, bounded NMI/VRAM batches avoid redundant protection in expert code.

SamplePure ASMAmy StudioASM difference
Hello World184227-43
Warrior bitmap3,0663,214-148
Controller Visual264604-340
Sprite Metasprite343939-596
Gameplay State Update*5081,152-644
Tile Animation7611,255-494
Six-sample total5,1267,391-2,265

The controller ROM fell from 297 to 264 bytes by replacing CONT_SCAN, cartridge decoding, and a keypad table with two BIOS DECODER calls. It passes neutral, keypad, held-direction, FIRE, and release tests. POLLER remains useful for two-sample debounce, but its 12-byte result and 83-91 executed instructions cannot beat one 29-instruction DECODER segment here.

The ASM result is a diagnostic baseline, not evidence that assembly is universally preferable. The State Update ASM fixture validates the complete headless workload but does not reproduce Amy Studio's additional status display.

SPECIALIZED GRAPHICS EXPERIMENTS

Useful evidence, outside the main ranking.

The ZIP also contains an eight-tool PutPixel Motion fixture derived from sverx’s SGlib_CV example; seven pass motion, two-controller, and Name Table checks. All nine principal controller ROMs pass, including Pure ASM and ugBASIC. A source-only pixel, line, and circle study based on Oscar Toledo’s CVBasic example remains unranked work in progress.

AMY SOURCE + GEARCOLECO

All six benchmark cases.

Hello World

text screen
backdrop sky blue
print centered at 11, "HELLO, WORLD!"
screen on
Amy Studio Hello World running in GearColeco
The smallest benchmark establishes each toolchain's fixed runtime cost.

Warrior bitmap

picture WarriorPicture:
  pattern from "@project/warrior.pattern.zx0" codec zx0
  color from "@project/warrior.color.zx0" codec zx0
end picture

show picture WarriorPicture

Exomizer proof: the evidence archive contains this equivalent Amy source, both .exo assets, and the exact 3,319-byte ROM for direct testing.

picture WarriorExomizer:
  pattern from "@project/warrior.pattern.exo" codec exomizer
  color from "@project/warrior.color.exo" codec exomizer
end picture

show picture WarriorExomizer
Amy Studio Warrior bitmap running in GearColeco
Full 256x192 Graphics II output. All nine ranked paths are pixel-exact; equivalent Pattern/Color encodings are accepted.

Controller monitor

InputLoop:
  wait
  if keypad(1) <> 255 then
    backdrop magenta
  elseif joypad(1).fire then
    backdrop light red
  elseif joypad(1).up then
    backdrop light green
  else
    backdrop dark blue
  end if
  goto InputLoop
Amy Studio controller monitor running in GearColeco
Runtime-tested for neutral input, direction, keypad, and fire-button changes.

Animated three-color metasprite

A metasprite is one visual actor assembled from multiple hardware sprites. This example overlaps three 16x16 sprites for white, yellow, and black layers.

u8 PlayerX = 120
u8 PlayerY = 88
u8 AnimationFrame = 0

sprites simple
set sprite count 3

MainLoop:
  wait
  if joypad(1).left then PlayerX -= 1
  if joypad(1).right then PlayerX += 1
  AnimationFrame = 1 - AnimationFrame
  set sprite 0 to PlayerY,PlayerX,0,15
  set sprite 1 to PlayerY,PlayerX,4,11
  set sprite 2 to PlayerY,PlayerX,8,1
  update sprites
  goto MainLoop
Amy Studio yellow three-color metasprite with white eyes and black pupils running in GearColeco
GearColeco runtime result. Three overlapping sprites stay within the TMS9918 scanline limit; the archive contains all six animation masks and eight ROMs.

Gameplay state update

This deterministic six-actor workload measures state dispatch, record-array updates, timers, movement, collisions, score, and checksum rather than rendering speed.

state machine WorldBehavior:
  Running calls UpdateActors
  Bonus calls UpdateBonus
end state machine

ActorState Actors[6]
u16 Score = 0
u16 Checksum = 0

for Tick = 0 to 47
  dispatch WorldMode using WorldBehavior
  ' UpdateActors handles records, timers, movement and collisions.
next
Amy Studio gameplay state update benchmark running in GearColeco
Exact final oracle: state 1, 13 collisions, score 425, checksum 1478. Complete source and all eight ROMs are in the evidence archive.

Graphics II tile animation

One shared pattern animates every star while six stationary 3x2 ships alternate tile frames through Name Table updates.

AnimationLoop:
  wait
  Tick += 1
  if Tick & 3 = 0 then
    StarFrame = (StarFrame + 1) % 3
    copy StarPatterns[StarFrame * 8] count 8 to vram.pattern + StarTile * 8
  end if
  if Tick & 7 = 0 then
    ShipFrame = 1 - ShipFrame
    for Ship = 0 to 5
      put ShipTiles[ShipFrame * 6] frame size 3,2 at ShipX[Ship],ShipY[Ship]
    next
  end if
goto AnimationLoop
Amy Studio tile animation benchmark running in GearColeco
GearColeco observed both animation phases and verified all pattern, color, and Name Table bytes with no stray ship tiles.

GRAPHICS II COMPRESSION CORPUS

42 pictures, 16 codecs, 672 exact checks.

Every 12,288-byte Pattern + Color picture round-tripped exactly. Podiums rank first-use ROM bytes: payload plus one linked decoder. Gallery cards show the three smallest payloads and Pletter's rank when it is outside the top three.

RankCodecPayload totalDecoderFirst-use places (pictures)
1st2nd3rd4th5th
1Exomizer 2161,3742262112231
2ZX0166,5561362118120
3DAN2166,9232120071310
4DAN3167,1862050016511
5DAN1167,240205034916
6MegaLZ171,01616200111
7aPLib Compact171,48424400000
8Pletter171,75121200000
9ZX7171,78813600293
10BitBuster172,94116600000
11ZX1176,56212704500
12ZX2177,58211505400
13LZF193,41211700000
14Nibble214,55511500000
15MDK-RLE253,8594600000
16MSC1259,0236800000

Most, median, and least compressible

ROM File Edition converted for the TMS9918
most compressible
ROM File Edition
1. ZX0: 901 bytes
2. Exomizer 2: 904 bytes
3. DAN2: 909 bytes
... 9. Pletter: 960 bytesArtwork byAmy Bienvenu / NewColecoAmy Bienvenu / NewColeco
Cake converted for the TMS9918
median
Cake
1. Exomizer 2: 2,935 bytes
2. ZX0: 2,958 bytes
3. DAN2: 2,999 bytes
... 9. Pletter: 3,108 bytesArtwork byAmy Bienvenu / NewColecoAmy Bienvenu / NewColeco
Mona Lisa converted for the TMS9918
least compressible
Mona Lisa
1. Exomizer 2: 9,208 bytes
2. ZX0: 9,426 bytes
3. DAN3: 9,490 bytes
... 5. Pletter: 9,640 bytes

Selection is mechanical. Exomizer uses a 226-byte ROM decoder plus 156 bytes of CPU RAM. Amy Studio reserves that workspace at a 256-byte boundary; its generated address varies and must not overlap other RAM. The detailed PDF contains all 42 converted images and per-picture evidence.

AMY'S LEGACY

The compact philosophy predates Amy Studio.

NewColeco links Amy's historical CRTCV, CVLIB, GETPUT 1.1, and DAN2 code without ABI changes. Its Hello, bitmap, and controller ROMs remain small and run correctly today. The exact Warrior test confirms its direct-to-VRAM DAN2 path. Amy Studio continues that BIOS-aware, original-hardware approach with a modern language, integrated tools, and debugging.

January 2018 devkit archive · AtariAge 2018 update · AtariAge history

PVCOLLIB EVIDENCE

A broad ColecoVision C library, not only a ROM-size entry.

AreaVerified local API or exampleStatus
GraphicsText and bitmap modes, direct VRAM, sprites, hitbox collisionsSource verified; bitmap runtime exact
Sprite pressure32-entry SAT and NMI sprite swapping for the four-per-line limitSource verified
ControllersBoth joypads, keypads, four fire buttons, and both spinnersSource verified; visual ROM boots
SoundBIOS-style sound tables, sequenced music, concurrent SFX areasSource and examples verified
CompressionRLE, Pletter, DAN1, DAN2, and DAN3 direct-to-VRAM APIsRLE exact; other stream pairings not ranked yet
Expanded hardwareMegaCart, SGM, Phoenix, and F18A supportCredited separately from stock tests

PKK'S DEVKIT EVIDENCE

Small linked C code, with a specialized bitmap codec.

Philipp Klaus Krause's devkit uses libcv/libcvu, completes all six runtime fixtures, and has the third-smallest total in this suite at 10,835 occupied bytes. Its Warrior RLE+Huffman path is exact, but needs a 2,934-byte payload, 514-byte shared tree/configuration, about 411 decoder bytes, and 19 bytes of runtime RAM. In the separate 42-picture study, which also includes RAW and libcv's native method, it usually ranks 14th or 15th among 17 methods. That result informs shared-codebook research; it is not a general verdict on PkK's devkit.

Installation tutorial · libcv reference · ColecoVision.eu

Stock and expanded hardware

The measured ranking targets an original ColecoVision with its TMS9918A, SN76489, 1 KB RAM, BIOS, and compact cartridge. Expanded hardware remains a valid strength, but is reported separately.

ExtensionExamples of supportComparison scope
MegaCart / bankingAmy Studio editable 64 KB–1 MB projects; CVBasic, z88dk, devkitSMS, and PVColLib banking pathsValid, excluded from stock-ROM ranking
F18A videoPVColLib APIs; Amy debugger emulation through GearColeco 1.7.0Amy language APIs remain future work
SGM sound and RAMAmy project profiles and AY commands; CVBasic and PVColLib pathsExpansion or compatible clone systems
SP0256 voice modulesAmy Lundy/EVE commands and debugger emulationOptional external hardware
Coleco ADAMAmy native EOS and OS7+EOS hybrid projects, DSK/DDP packaging, writable media, keyboard, ADAMnet, serial, and modem supportRuntime-tested; larger EOS memory models and optional-EOS cartridges remain future architecture
Extra RAMSGM, ADAM, and compatible clonesReported separately from stock 1 KB RAM

Philosophy

AreaAmy StudioCVBasicz88dk +coleco
Primary goalIntegrated ColecoVision game authoringPortable BASIC game developmentGeneral-purpose Z80 C development
Target reachColecoVision-firstMultiple classic consoles and computersLarge family of Z80 targets
Typical workflowBrowser IDE, editable multi-file projects, incremental target builds, asset editors, debugger, and runtime testsCompiler plus editor and emulatorCLI toolchain plus editor and emulator
Hardware philosophyStock ColecoVision first, with explicit MegaCart, SGM, native EOS, and OS7+EOS targetsPortable abstractions with platform extensionsLow-level C control and broad libraries

Language and game systems

CapabilityAmy StudioCVBasicz88dk +coleco
Numeric typesExplicit 8/16/32-bit integers, fixed-point, FP5, packed BCDGame-oriented 8/16-bit integersC integer families and software floating point
Data structures1D/2D arrays, records, record arrays, RAM overlaysArrays and BASIC data constructsC arrays, structs, unions, and pointers
FunctionsTyped parameters, returns, ref parameters, recursionProcedures and BASIC function facilitiesFull C functions and calling conventions
State managementTyped state machines, scenes, overlay-aware RAMConventional BASIC control flowC control flow and manual architecture
InputJoypad, keypad, spinner, pressed/released edges, controller-aware loweringJoypad, keypad, spinnerC input APIs; advanced behavior is generally manual
SpritesHigh-level sprites, collision helpers, opt-in flicker with stable rangesHigh-level sprites and flicker supportTMS9918 sprite APIs and manual game logic
Sound and voiceBIOS tables, Tiny Sound, DSound, adaptive VoxPCM, and SP0256 Lundy/EVE modulesSound and integrated music commandsPSG libraries and external conversion workflows

Production workflow

CapabilityAmy StudioCVBasicz88dk +coleco
Integrated browser IDEEditable multi-file projects, FILES tree, Amy/ASM/JSON editors, assets, compiler, and debuggerNo official integrated IDENo official integrated IDE
Build workflowTarget-aware incremental builds with dependency tracking and MODIFIED, STALE, COMPILED, and FAILED statesCompiler-driven buildsCLI and build-system driven
Source debuggingGearColeco 1.7.0, source/Z80 stepping, breakpoints, bank-aware symbols, memory/VRAM, rewind, and cycle profilingExternal emulator workflowExternal emulator/debugger workflow
Media and hardware setupROM/COL/DSK/DDP drag-and-drop, Coleco/ADAM firmware, controller profiles, voice modules, SGM/AY, and ADAM peripheralsExternal emulator workflowExternal emulator/debugger workflow
Runtime testing and captureCheckpoints, scripted inputs, route replay after recompilation, record-from-boot, AVI, and animated GIF exportProject-specific external setupProject-specific external setup
Graphics workflowConfigurable bitmap, tile, sprite, frame, tilemap, and TMS9918 composite editorsExternal/companion conversion toolsExternal tools and custom pipelines
CompressionSixteen integrated direct-to-VRAM codecs, including Exomizer 2 and MSC1Pletter-centered workflowZX-family tools and C/ASM libraries
Expanded project outputs64 KB–1 MB MegaCart ROMs plus native EOS and OS7+EOS DSK/DDP mediaMegaCart and SGM supportBanked/MegaCart toolchain options

AMY STUDIO FITS WHEN

You want depth on the ColecoVision.

You value original-hardware constraints, integrated graphics and compression, readable game-oriented syntax, explicit RAM accounting, source debugging, and an environment shaped by decades of ColecoVision practice.

Open Amy Studio

OTHER TOOLCHAINS FIT WHEN

Your project values their strengths.

CVBasic supports portable game-oriented BASIC. z88dk provides broad C and Z80 tooling. ugBASIC offers extensive cross-platform BASIC features. devkitSMS, PVColLib, and PkK's devkit provide established SDCC library workflows.

CVBasic · z88dk · ugBASIC · devkitSMS · PVColLib · PkK's devkit · NewColeco